package com.superquan.selfstudybootmybatis.utils.singleton;

/**
 * @program: self-study-bootmybatis
 * @ClassName StaticPattern
 * @description: 懒汉实现单例模式
 * @author: zwq
 **/
public class LazyPattern {

	//类初始化时不会初始化该对象，真正需要使用的时候才会创建改对象
	//懒汉模式时线程不安全的，但是可以通过在getInstance方法上面加上synchronized来保证线程安全
	private static LazyPattern lazyPattern;

	//懒汉模式构造方法是私有的，因此不能被继承
	private LazyPattern() {
		System.out.println("私有LazyPattern构造参数初始化！");
	}

	//懒汉模式原本是线程不安全，需要在getInstance方法上加synchronized来保证线程安全
	public static synchronized LazyPattern getInstance(){
		if(lazyPattern==null){
			lazyPattern=new LazyPattern();
		}
		return lazyPattern;
	}

	public static void main(String[] args) {
		LazyPattern lp1 = LazyPattern.getInstance();
		LazyPattern lp2 = LazyPattern.getInstance();
		//"=="比较的是引用，若未true则说明lp1和lp2是同一个实例
		if(lp1==lp2){
			System.out.println("LazyPattern是使用懒汉单例模式创建的，因此lp1和lp2是同一个实例");
		}
	}

}
